//
//  HMEmoticonFooterView.swift
//  HMWeiBo
//
//  Created by Apple on 16/8/7.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

/*
    1. UIStackView iOS9之后
    2. 方向只有水平和垂直

*/

enum HMEmoticonType: Int {
    
    case Recent = 10000
    case Defalut = 10001
    case Emoji = 10002
    case Lxh = 10003
    
}

// 1.
protocol HMEmoticonFooterViewDelegate: NSObjectProtocol {
    
    // 注意 参数 是采用的枚举
    func footerButtonClick(type: HMEmoticonType)
    
}

class HMEmoticonFooterView: UIStackView {

    
    weak var delegate: HMEmoticonFooterViewDelegate?
    
    // 第一步: 重写父类的构造函数
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        //注意!!!!!!!!!
        // 设置方向
        axis = .Horizontal
        
        // 设置填充模式
        distribution = .FillEqually
        
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // 第二步: 定义一个添加子类和设置子类控件约束的方法
    private func setupUI(){
        // 我们的tag需要添加枚举所对应的值
        
        /*
            如果非要填写10000也是可以的,不用纠结
        */
        addChildButton("最近", tag:HMEmoticonType.Recent.rawValue)
        addChildButton("默认", tag: HMEmoticonType.Defalut.rawValue)
        addChildButton("emoji", tag: HMEmoticonType.Emoji.rawValue)
        addChildButton("浪小花", tag: HMEmoticonType.Lxh.rawValue)

    }
    

    
    private func addChildButton(title: String,tag: Int) {
        
        let button = UIButton(type: UIButtonType.Custom)
        
        button.setTitle(title, forState: UIControlState.Normal)
        
        button.setBackgroundImage(UIImage(named: "compose_emotion_table_normal"), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "compose_emotion_table_selected"), forState: UIControlState.Selected)
        
        // 添加tag
        button.tag = tag
        
        button.addTarget(self, action: "buttonClick:", forControlEvents: UIControlEvents.TouchUpInside)
        
        // 注意: 添加到 UIStackView 上
//        addSubview(<#T##view: UIView##UIView#>) 不是这个方法
        addArrangedSubview(button)
        
        // 让默认表情为选中状态
        if tag == 10001 {
            
            button.selected = true
            
//            buttonClick(button)
        }
    }
    
    //MARK:-- 按钮点击方法
    @objc private func buttonClick(button: UIButton) {
        
//        printLog(subviews)
        // 2中方式实现 选中效果
        // 第一种遍历子控件
        for subview in subviews {
            
            let subButton = subview as! UIButton
            
            subButton.selected = false
            
        }
        
        button.selected = true
        
        // 第二种: 大家经常用的
        // 需要顶一个按钮的属性来记录之前的按钮
        
        
        // 调用代理
        // 我们只有tag
        // 参数需要type
        let type  = HMEmoticonType(rawValue: button.tag)
        
        delegate?.footerButtonClick(type!)
        
       
        
    }
    
   
    
    //第三步: 懒加载控件
    //MARK:-- 懒加载控件
}
